/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.autosalon.ui.objednavka.action;

import com.autosalon.tools.DateValidator;
import com.autosalon.ui.objednavka.Objednavka;
import com.autosalon.ui.objednavka.state.ObjednavkaStateHolder;
import com.vaadin.ui.Button.ClickEvent;

/**
 *
 * @author s0vet
 */
public class SaveObjednavkaAction extends AbstractObjednavkaAction {
    
    public SaveObjednavkaAction(Objednavka objednavka){
            super(objednavka);
    }

    @Override
    public void buttonClick(ClickEvent event) {
        int id;
        try {
            id = objednavka.getSwitcher().getMainWindow().getZakaznik().getRole().getId().intValue();
        } catch (NullPointerException e) {
            id = 1;
        }
        //kontrola validniho pojisteni
        if (DateValidator.isValid(objednavka.getDfCreateObjPojisteniTo().getValue()) && objednavka.getDfCreateObjPojisteniTo().getValue()!=null) {
            if (DateValidator.isValid(objednavka.getDfCreateObjFinancovaniTo().getValue()) && objednavka.getDfCreateObjFinancovaniTo().getValue()!=null) {
                java.util.Date fFrom = (java.util.Date) objednavka.getDfCreateObjFinancovaniFrom().getValue();
                java.util.Date fTo = (java.util.Date) objednavka.getDfCreateObjFinancovaniTo().getValue();
                if (fTo.getTime() - fFrom.getTime() < 0) {
                    objednavka.getWindow().showNotification("Datum ukončení financování nesmí být nižší než datum sjednání.");
                    ObjednavkaStateHolder.setState(ObjednavkaStateHolder.NEW_OBJEDNAVKA_STATE, id, objednavka);
                    return;
                }
                java.util.Date pFrom = (java.util.Date) objednavka.getDfCreateObjPojisteniFrom().getValue();
                java.util.Date pTo = (java.util.Date) objednavka.getDfCreateObjPojisteniTo().getValue();
                if (pTo.getTime() - pFrom.getTime() < 0) {
                    objednavka.getWindow().showNotification("Datum ukončení pojištění nesmí být nižší než datum sjednání.");
                    ObjednavkaStateHolder.setState(ObjednavkaStateHolder.NEW_OBJEDNAVKA_STATE, id, objednavka);
                    return;
                }
                objednavka.saveObjednavka();
                objednavka.init();
            } else {
                objednavka.getWindow().showNotification("Datum ukončení financování není ve správném formátu.");
                ObjednavkaStateHolder.setState(ObjednavkaStateHolder.NEW_OBJEDNAVKA_STATE, id, objednavka);
            }
        } else {
            objednavka.getWindow().showNotification("Datum ukončení pojištění není ve správném formátu.");
            ObjednavkaStateHolder.setState(ObjednavkaStateHolder.NEW_OBJEDNAVKA_STATE, id, objednavka);
        }
        
    }
    
}
